package com.example.demo.component.proxy.cglib.method;

import net.sf.cglib.proxy.Enhancer;

/**
 * @ClassName Main
 * @Description
 * @date 2023/4/6 14:28
 * @Author yanceysong
 * @Version 1.0
 */
public class Main {
    public static void main(String[] args) {
        /*
         * 这里Enhancer类是CGLib中的一个字节码增强器
         * 它可以方便的对你想要处理的类进行扩展，以后会经常看到它。
         */
        Enhancer enhancer = new Enhancer();
        enhancer.setSuperclass(ConcreteClassNoInterface.class);
        enhancer.setCallback(new ConcreteClassInterceptor());
        ConcreteClassNoInterface concreteClassNoInterface = (ConcreteClassNoInterface) enhancer.create();
        //生成的代理类调用方法
        concreteClassNoInterface.getConcreteMethodA("123");
        concreteClassNoInterface.getConcreteMethodB(1);
    }
}
